From b50c27358b8e54249135f92a87d5712712df8598 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 7 Oct 2009 08:42:50 +0100 Subject: [PATCH] PVUSB: Update public header. Signed-off-by: Noboru Iwamatsu --- xen/include/public/io/usbif.h | 46 +++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/xen/include/public/io/usbif.h b/xen/include/public/io/usbif.h index 511b368828..91e82b8829 100644 --- a/xen/include/public/io/usbif.h +++ b/xen/include/public/io/usbif.h @@ -31,6 +31,13 @@ #include "ring.h" #include "../grant_table.h" +enum usb_spec_version { + USB_VER_UNKNOWN = 0, + USB_VER_USB11, + USB_VER_USB20, + USB_VER_USB30, /* not supported yet */ +}; + /* * USB pipe in usbif_request * @@ -57,21 +64,26 @@ * 10 = control, 11 = bulk) */ #define usbif_pipeportnum(pipe) ((pipe) & 0x1f) -#define usbif_setportnum_pipe(pipe,portnum) \ +#define usbif_setportnum_pipe(pipe, portnum) \ ((pipe)|(portnum)) + #define usbif_pipeunlink(pipe) ((pipe) & 0x20) +#define usbif_pipesubmit(pipe) (!usbif_pipeunlink(pipe)) #define usbif_setunlink_pipe(pipe) ((pipe)|(0x20)) #define USBIF_BACK_MAX_PENDING_REQS (128) -#define USBIF_MAX_SEGMENTS_PER_REQUEST (10) +#define USBIF_MAX_SEGMENTS_PER_REQUEST (16) +/* + * RING for transferring urbs. + */ struct usbif_request_segment { grant_ref_t gref; uint16_t offset; uint16_t length; }; -struct usbif_request { +struct usbif_urb_request { uint16_t id; /* request id */ uint16_t nr_buffer_segs; /* number of urb->transfer_buffer segments */ @@ -104,18 +116,36 @@ struct usbif_request { /* urb data segments */ struct usbif_request_segment seg[USBIF_MAX_SEGMENTS_PER_REQUEST]; }; -typedef struct usbif_request usbif_request_t; +typedef struct usbif_urb_request usbif_urb_request_t; -struct usbif_response { +struct usbif_urb_response { uint16_t id; /* request id */ uint16_t start_frame; /* start frame (ISO) */ int32_t status; /* status (non-ISO) */ int32_t actual_length; /* actual transfer length */ int32_t error_count; /* number of ISO errors */ }; -typedef struct usbif_response usbif_response_t; +typedef struct usbif_urb_response usbif_urb_response_t; + +DEFINE_RING_TYPES(usbif_urb, struct usbif_urb_request, struct usbif_urb_response); +#define USB_URB_RING_SIZE __RING_SIZE((struct usbif_urb_sring *)0, PAGE_SIZE) + +/* + * RING for notifying connect/disconnect events to frontend + */ +struct usbif_conn_request { + uint16_t id; +}; +typedef struct usbif_conn_request usbif_conn_request_t; + +struct usbif_conn_response { + uint16_t id; /* request id */ + uint8_t portnum; /* port number */ + uint8_t speed; /* usb_device_speed */ +}; +typedef struct usbif_conn_response usbif_conn_response_t; -DEFINE_RING_TYPES(usbif, struct usbif_request, struct usbif_response); -#define USB_RING_SIZE __RING_SIZE((struct usbif_sring *)0, PAGE_SIZE) +DEFINE_RING_TYPES(usbif_conn, struct usbif_conn_request, struct usbif_conn_response); +#define USB_CONN_RING_SIZE __RING_SIZE((struct usbif_conn_sring *)0, PAGE_SIZE) #endif /* __XEN_PUBLIC_IO_USBIF_H__ */ -- 2.30.2